/**
 * @memberof w.loader
 */
class ImageLoader {
    constructor(){
        this.pool=new Map();
    }
    /**
     * 加载图片资源并缓存。
     * @param {String} url 图片地址
     * @param {Boolean} db 图片资源是否在db中缓存。
     */
    async loadImage(url) {
        let bitmap = this.getBitmap(url);
        if (!bitmap) {
            let bitmap = await getImage(url);
            bitmap.id = url;
            this.addBitmap(bitmap);
        }
        return this.getBitmap(url);
    }
    /**
     * 加载一系列图片资源并缓存。
     * @param {Array} urls 图片资源数组
     */
    async loadCubeImage(urls) {
        let images = [];
        for (let i = 0; i < urls.length; i++) {
            images[i] = await this.loadImage(urls[i]);
        }
        return images;
    }
    /**
     * 添加bitmap
     * @param {*} bitmap 
     */
    addBitmap(bitmap) {
        const id = bitmap.id ? bitmap.id : guid();
        if (!this.pool.has(id)) {
            this.pool.set(id, bitmap);
        }
        return this;
    }
    /**
     * 删除bitmap
     * @param {*} bitmap 
     */
    removeBitmap(id) {
        let bitmap = this.pool.get(id);
        if (bitmap) {
            bitmap.close();
        }
        this.pool.delete(id);
    }
    /**
     * 获取bitmap
     * @param {*} bitmap 
     */
    getBitmap(id) {
        return this.pool.get(id);
    }
}
export {ImageLoader}
